package com.zg.autoform.service;

import com.zg.autoform.dto.DuplicateCheckResult;

import java.util.List;
import java.util.Map;

/**
 * 重复数据检查服务接口
 * @author zg
 */
public interface DuplicateCheckService {

    /**
     * 检查单条数据是否重复
     * @param tableName 表名
     * @param data 数据
     * @param checkFields 检查字段列表
     * @return 检查结果
     */
    DuplicateCheckResult checkDuplicate(String tableName, Map<String, Object> data, List<String> checkFields);

    /**
     * 批量检查数据是否重复
     * @param tableName 表名
     * @param dataList 数据列表
     * @param checkFields 检查字段列表
     * @return 检查结果列表
     */
    List<DuplicateCheckResult> batchCheckDuplicate(String tableName, List<Map<String, Object>> dataList, List<String> checkFields);

    /**
     * 删除重复数据（用于覆盖策略）
     * @param tableName 表名
     * @param duplicateId 重复数据ID
     */
    void deleteDuplicateData(String tableName, Long duplicateId);

    /**
     * 更新重复数据（用于覆盖策略）
     * @param tableName 表名
     * @param duplicateId 重复数据ID
     * @param newData 新数据
     */
    void updateDuplicateData(String tableName, Long duplicateId, Map<String, Object> newData);
}
